package studay.template;

/**
 * @program: 设计模式
 * @description:
 * @author: Tom
 * @create: 2022-01-07 22:14
 **/
public abstract class AbstractProjectManager {

    /**
     * 定义模板方法，声明final防止子类覆盖，更改顺序，流程可以服用
     */
    public final void processProject(){
        review();
        degisn();
        coding();
        test();
        online();
    }

    /**
     * 各个项目都需要评审
     */
    public void review(){
        System.out.println("项目需求评审");
    }

    /**
     * 各个项目都需要设计
     */
    public void degisn(){
        System.out.println("UI,UE进行设计");
    }

    /**
     * 抽象方法，由具体子类进行实现，编码耗时不一样
     */
    public abstract void coding();

    /**
     * 抽象方法，由具体子类进行实现，编码耗时不一样,测试多种多样，自动化测试，安全测试，压力测试，手工测试
     */
    public abstract void test();

    /**
     * 抽象方法，由具体子类实现，上限有全量，灰度，停机发布
     */
    public abstract void online();
}
